home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 045a / bpt5107.zip / BPATNLM.511 < prev    next >
Text File  |  1991-06-13  |  17KB  |  518 lines

  1. ;       PATCHES FOR BTRIEVE.NLM ver 5.10 for Netware 3.10
  2. ;
  3. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  4. ;
  5. ; 1. Btrieve (NLM)       (XREF v5.10  PATCH #14)
  6. ;
  7. ;    An incompetibility with the rest of the Btrieve products:
  8. ;      The Get Position operation following a Delete operation returns
  9. ;      status 43 instead of status 8.
  10. ;
  11. ;       beginning of patch #1
  12. r 4278 8
  13. ;
  14. ;       end of patch #1
  15. ;
  16. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  17. ;
  18. ; 2. Btrieve (NLM)       (XREF v5.10  PATCH #19)
  19. ;
  20. ;    Without this patch various random error status can be returned when using
  21. ;    variable length pages or using truncation.
  22. ;
  23. ;       beginning of patch #2
  24. r 933e 90 90 90 90 90 90 90 90 90 90 90
  25. r 935a 18
  26. ;
  27. ;       end of patch #2
  28. ;
  29. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  30. ;
  31. ; 3. Btrieve (NLM)       (XREF v5.10  PATCH #21)
  32. ;
  33. ;    The Btrieve function to compare INTEGER keys will sometimes not
  34. ;    recognize a negative value, such as 8000h, as the lower value, treating
  35. ;    it as unsigned instead.
  36. ;    ( This patch was originally buggy and had to be corrected on 29Oct90. )
  37. ;
  38. ;       beginning of patch #3    ( Corrected 10-29-90 )
  39. ;
  40. r 50c2 0F B7 42 16 D1 E8 48 8B D3 8B D9 66 8B C8 03 C0
  41. r 50d2 03 D0 03 C3 66 8B 1A 66 3B 18 7E 06 66 BB 01 00
  42. r 50e2 EB 0B 74 06 66 BB FF FF EB 03 66 33 DB 66 85 C9
  43. r 50f2 74 17 66 49 66 85 DB 75 10 83 E8 02 83 EA 02
  44. r 5101 66 8B 1A 66 3B 18 76 DB EB D3 66 8B C3 C3 90 90
  45. ;
  46. ;       end of patch #3
  47. ;
  48. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  49. ;
  50. ; 4. Btrieve (NLM)       (XREF v5.10  PATCH #22)
  51. ;
  52. ;    If 1. User1 and User2 have different files open ( A and B ) and
  53. ;       2. User3 also opens file A and
  54. ;       3. User4 also opens file B while
  55. ;       4. User2 is simultaneously CLOSING file B
  56. ;    a timing window may appear which causes a divide-by-0 GPI. This patch
  57. ;    corrects a semaphore to fix this.
  58. ;    ( This patch was modified on 29Oct90 to allow correction to #21, above. )
  59. ;
  60. ;       beginning of patch #4   ( Modified 10-29-90, per patch #3  )
  61. ;
  62. r c9e2 0f bf c3 6b c0 75 80 4c 02 74 40 e9 4e ec ff ff
  63. ;
  64. r b64a eb 1a 90
  65. ;
  66. r b664 eb 0f 83 c4 0c 90
  67. ;
  68. r b670 e9 7a 13 00 00
  69. ;
  70. ;       end of patch #4
  71. ;
  72. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  73. ;
  74. ; 5. Btrieve (NLM)       (XREF v5.10  PATCH #24)
  75. ;
  76. ;    Get Key-only operations are erroneously not updating the position block.
  77. ;
  78. ;       beginning of patch #5
  79. ;
  80. r 4d1b eb 0c
  81. ;
  82. ;       end of patch #5
  83. ;
  84. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  85. ;
  86. ; 6. Btrieve (NLM)       (XREF v5.10  PATCH #26)
  87. ;
  88. ;    If a Btrieve file has a ZSTRING or LSTRING key using alternate collating
  89. ;    sequence then a key value of length 0 for that key can result in some
  90. ;    undeterministic error due to an uninitialized variable.
  91. ;
  92. ;       beginning of patch #6   ( MUST have patch #3  also!!! )
  93. ;
  94. r 5111 89 e5 83 ec 10 66 c7 45 fc 00 00 e9 d8 fe ff ff
  95. ;
  96. r 4ff4 e9 18 01 00 00
  97. ;
  98. ;       end of patch #6
  99. ;
  100. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  101. ;
  102. ; 7. Btrieve (NLM) & BREQUEST   (XREF v5.10  PATCH #27)
  103. ;
  104. ;    For data-only files, Btrieve was returning data to the key buffer
  105. ;    after Get Direct, Update, Insert and Extended Insert.
  106. ;    *** THE PATCH MUST BE MADE BOTH TO THE VAP (OR NLM) AND THE REQUESTER ***
  107. ;        THE VAP (OR NLM) SENDS A FLAG TO THE REQUESTER- IF YOU DON'T PATCH
  108. ;        THE REQUESTER THE FLAG WILL NOT BE UNDERSTOOD AND THE PROBLEM WILL
  109. ;        STILL BE PRESENT.
  110. ;
  111. ;       beginning of patch #7
  112. ;
  113. r e1c f6 45 ef 80 90
  114. ;
  115. r 5b0a 80 4e 31 80 90 90
  116. ;
  117. r 7ea9 80 4e 31 80 90 90
  118. ;
  119. r 1ba7 f6 c5 80
  120. ;
  121. r 1e99 8a 5d 5f 08 5e 0f 90 90 90 90 90
  122. ;
  123. r 41a7 75 6f 83 7d f8 00 0f 84 fd 87 00 00
  124. ;
  125. r c9a3 80 4e 31 40 e9 5f 78 ff ff
  126. ;
  127. r 5bf0 e9 92 6d 00 00 90
  128. ;
  129. r c97a 74 09 89 f0 31 d2 e9 64 92 ff ff 80 4e 31 40 e9 6b 92 ff ff
  130. ;
  131. r 6914 e9 82 60 00 00 90 90
  132. ;
  133. r c98e 66 85 c0 75 04 80 4e 31 40 8b 55 62 0f b7 52 08 e9 6b 9f ff ff
  134. ;
  135. ;       end of patch #7
  136. ;
  137. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  138. ;
  139. ; 8. Btrieve (NLM)       (XREF v5.10  PATCH #29)
  140. ;
  141. ;     This fixes a bug where a file opened by Btrieve on the server could
  142. ;     not be opened for read-only by a non-Btrieve application, even though
  143. ;     the file had the Shareable attribute set by the Netware FLAG utility.
  144. ;
  145. ;       beginning of patch #8
  146. ;
  147. r 148e 1b
  148. ;
  149. ;       end of patch #8
  150. ;
  151. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  152. ;
  153. ; 9. Btrieve (NLM)       (XREF v5.10  PATCH #32)
  154. ;
  155. ;    This fixes a bug in an undocumented Btrieve function call, used by
  156. ;    Netware SQL.  Only apply this patch after applying patch #27!
  157. ;
  158. ;       beginning of patch #9  (Must have patch #7 also!!)
  159. ;
  160. r 7e1c eb 41
  161. r 7e39 C6 44 10 60 01 66 a1 eb 02 00 00 66 89 46 26 89
  162. r 7e49 f0 8d 55 22 8d 5d 62 e8 d0 95 ff ff 85 c0 74 06
  163. r 7e59 66 bb 19 00 eb 3a ff 36 6a 09 0f b7 c7 6b c0 72
  164. r 7e69 8b 15 4e 06 00 00 01 d0 8d 58 0c 89 f0 8b 55 62
  165. r 7e79 33 C9 b1 2e e8 95 96 ff ff 93 0f b7 c7 3b 05 eb
  166. r 7e89 02 00 00 7c 1f 89 f0 8b 55 62 e8 50 96 ff ff 93
  167. r 7e99 6b 05 eb 02 00 00 72 8b 15 4e 06 00 00 66 c7 44
  168. r 7ea9 02 60 00 00 80 4e 31 80 e9 4e 02 00 00 90
  169. r 52 1d
  170. r d0a2 eb
  171. r d0a6 e4
  172. r d0aa d1
  173. r d0ae b4
  174. r d0b2 89
  175. m d0b6 d0ba 860
  176. ;
  177. ;
  178. ;       end of patch #9
  179. ;
  180. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  181. ;
  182. ;10. Btrieve (NLM)       (XREF v5.10  PATCH #33)
  183. ;
  184. ;    This fixes the following bug: after a Get Direct returns a status 22
  185. ;    (user's data buffer too small), the user's key buffer was being
  186. ;    overwritten with garbage.   It also fixes a bug in which the NLM
  187. ;    was not returning a key value after a Get Direct returns a status 22
  188. ;    when the user's data buffer WAS long enough to at least receive the
  189. ;    fixed length portion (including the keys) of the record.
  190. ;    *** THIS PATCH WILL ONLY WORK IF PATCH #27 HAS BEEN APPLIED TO THE ***
  191. ;        NLM AND BREQUEST.EXE !!!
  192. ;
  193. ;       beginning of patch #10.  (Must have patch #7 also!!)
  194. ;
  195. r 40fb 1a c6 45 e7 00 89 c6 e8 3b e4 ff ff 66 89 c2 66 85 c0 75 4c
  196. r 4130 38
  197. r 415b 75 71
  198. m 415d 4161 16
  199. r 4173 e8 8e 0b 00 00 66 3d 16 00 75 08 88 45 e7 e8 33 88 00 00
  200. r 4186 92 66 85 d2 75 5d 0f b6 46 13 83 f8 ff 74 54
  201. r 421b 75 07 8a 55 e7 84 d2 74 27 66 83 fa 16 74 21 8b
  202. r 422b 46 08 c7 40 38 ff ff ff ff c7 40 07 ff ff ff ff
  203. r 423b c7 40 0b ff ff ff ff 90 90
  204. r c9ac 8b 56 18 8b 12 0f b7 52 16 8b 46 04 3b 10 77 03
  205. r c9bc 33 c0 c3 80 4e 31 40 66 b8 16 00 c3
  206. ;
  207. ;       end of patch #10.
  208. ;
  209. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  210. ;
  211. ;11. Btrieve (NLM)       (XREF v5.10  PATCH #37)
  212. ;
  213. ;    Fixes a bug which caused Btrieve to return an incorrect status 2
  214. ;    when deleting a record from a file with a supplemental index.
  215. ;    This bug is most likely to occur only if few records have been inserted
  216. ;    since the creation of the supplemental index.  The bug only occurs
  217. ;    on the VAP or DOS if the supplemental index was created with the NLM.
  218. ;
  219. ;       beginning of patch #11.
  220. ;
  221. r 6656 b1
  222. r 6703 75 34 8b 45 dc 89 45 ec 8b 45 ec 66 8b 40 06 66 3b 46 10
  223. r 6716 73 25 8b 45 ec 8b 00 30 e4 8b 16 32 f6 3b c2
  224. r 673b eb ce
  225. ;
  226. ;       end of patch #11.
  227. ;
  228. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  229. ;
  230. ;12. Btrieve (NLM)       (XREF v5.10  PATCH #47)
  231. ;
  232. ;    When many workstations are constantly updating the same file, a timing
  233. ;    window can appear which results in cache corruption.  The effects can
  234. ;    range from file corruption to abends due to divide/by/zero or processor
  235. ;    exception interrupts.
  236. ;
  237. ;       beginning of patch #12.
  238. ;
  239. r 801 0d
  240. r 806 53 e8 c9 c1 00 00 5b
  241. r c9c8 03 C1 66 8B 5A 16 66 39 58
  242. r c9d1 6E 75 0d C6 82 8c 00 00 00 00 66 C7 40 6E 00 00 C3
  243. ;
  244. ;       end of patch #12.
  245. ;
  246. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  247. ;
  248. ;13. Btrieve (NLM)       (XREF v5.10  PATCH #48)
  249. ;
  250. ;    When ending a transaction on multiple files of different page sizes, the
  251. ;    cache can become corrupted, causing the next reader of a file in the
  252. ;    cache to get errors #15 and/or #52.
  253. ;
  254. ;       beginning of patch #13. ( Needs patch #3 also - Corrected 12-12-90 )
  255. ;
  256. r 5121 53 50 e8 86 d4 ff ff 8b d8 58 53 e8 1a f9 ff ff 58 5b c3
  257. r 5134 90 90 90 90 90 90 90
  258. r 79cc 51 d7 ff ff
  259. r 7b1a 03 d6 ff ff
  260. ;
  261. ;       end of patch #13.
  262. ;
  263. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  264. ;
  265. ;16. Btrieve (NLM)       (XREF v5.10  PATCH #57)
  266. ;
  267. ;    This bug caused a GET_NEXT to fail with a status 8 immediately after
  268. ;    an extended insert, but only if the insert followed an open call.
  269. ;
  270. ;       beginning of patch #16.
  271. ;
  272. r c8b1 58
  273. ;
  274. ;       end of patch #16.
  275. ;
  276. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  277. ;
  278. ;17. Btrieve (NLM)       (XREF v5.10  PATCH #59)
  279. ;
  280. ;    Multiple segmented null keys are not working; they either inserted into
  281. ;    the index (if duplicates are allowed) or the first occurance is inserted
  282. ;    into the index and status 5 is returned for the rest of the time (if
  283. ;    duplicates are not allowed).
  284. ;
  285. ;       beginning of patch #17
  286. ;
  287. r 57e6 0c
  288. ;
  289. ;       end of patch #17
  290. ;
  291. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  292. ;
  293. ;18. Btrieve (NLM)       (XREF v5.10  PATCH #60)
  294. ;
  295. ;    For a KEY-ONLY file which is small enough to fit on a single page, the
  296. ;    operations sequence OPEN-GET LAST(KEY)- GET PREVIOUS(KEY) [0-63-57] can
  297. ;    cause the server to hang in a loop.
  298. ;
  299. ;       beginning of patch #18
  300. ;
  301. r 3065 90 90 90
  302. ;
  303. ;       end of patch #18
  304. ;
  305. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  306. ;
  307. ;19. Btrieve (NLM)       (XREF v5.10  PATCH #61)
  308. ;
  309. ;    An Extended Insert called with a data buffer of all 0's (no data) would
  310. ;    return a random, uninitialized error value instead of the correct #63.
  311. ;
  312. ;       beginning of patch #19
  313. ;
  314. r 1f9b c3 89 c2 8b 00 8b 1a 66 c7 45 fc 3f 00 c3
  315. ;
  316. r 61e2 e8 b5 bd ff ff 90
  317. ;
  318. ;       end of patch #19
  319. ;
  320. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  321. ;
  322. ;20. Btrieve (NLM)       (XREF v5.10  PATCH #63)
  323. ;
  324. ;    Btrieve may return a status 9 (End of File) prematurely when Step Direct
  325. ;    is used to retrieve records from a file with greater than 65,535 pages
  326. ;    (i.e., at least 32 megabytes, depending on page size).
  327. ;
  328. ;       beginning of patch #20
  329. ;
  330. r 3f35 90 90 90 90 e8 c1 8a 00 00
  331. r c9f2 66 c7 45 f0 06 00 3b 46 26 72 07 66 3b 46 26 75 01 f8 c3
  332. ;
  333. ;       end of patch #20
  334. ;
  335. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  336. ;
  337. ;21. Btrieve (NLM)       (XREF v5.10  PATCH #66)
  338. ;
  339. ;    This fixes a bug in an undocumented Btrieve function call, used by
  340. ;    XQL and NetWare SQL.  The bug caused Netware SQL/XQL to return a
  341. ;    status 25 when logging in.
  342. ;
  343. ;       beginning of patch #21
  344. ;
  345. r b37c 0f
  346. r b38a eb 14 80 7e 13 82 74 0e 66 c7 46 14 19 00 eb a9
  347. r b39a 00 00 00 00 00 00 66 89 5e 26
  348. r cebe e3
  349. ;
  350. ;       end of patch #21
  351. ;
  352. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  353. ;
  354. ;24. Btrieve (NLM)       (XREF v5.10  PATCH #71)
  355. ;
  356. ;    When an application does a Step Next or Step Previous (or Extended
  357. ;    Step Next/Previous) after a Delete, Btrieve should return a status
  358. ;    8, Invalid Positioning.  Instead, this bug causes it to go into an
  359. ;    endless loop.  With the VAP & NLM, the workstation will appear to be
  360. ;    hung, too.  This patch fixes that bug.  (The bug only appears if the
  361. ;    record deleted has a physical position > 0xffff.)  Also fixed is a
  362. ;    related symptom of this bug: DOS, Windows and OS/2 Btrieve incorrectly
  363. ;    return a status 0 if you do a Get Position after a Delete.
  364. ;
  365. ;       beginning of patch #24
  366. ;
  367. r 3e74 e8 99 8b 00 00
  368. r 3e79 73 06
  369. r 3e7b 66 89 45 F8
  370. r 3e7f eb 15
  371. r ca05 75 06
  372. r ca07 66 B8 29 00
  373. r ca0b F9
  374. r ca0c C3
  375. r ca0d 8B 47 08
  376. r ca10 F6 40 39 80
  377. r ca14 75 02
  378. r ca16 F8
  379. r ca17 C3
  380. r ca18 66 B8 08 00
  381. r ca1c F9
  382. r ca1d C3
  383. ;
  384. ;       end of patch #24
  385. ;
  386. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  387. ;
  388. ;25. Btrieve (NLM)       (XREF v5.10  PATCH #72)
  389. ;
  390. ;    If station #1 is doing GETEQUALs with a key and client #2 is doing
  391. ;    DELETES on the same file using a different key, the system can sometimes
  392. ;    get confused about which key was last used by #1, returning a status 7.
  393. ;
  394. ;       beginning of patch #25
  395. ;
  396. r 1f5e 8a 46 0f 88 45 f1 8b 43 38 eb 04
  397. r 1f6d 89 45 6e
  398. ;
  399. ;       end of patch #25
  400. ;
  401. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  402. ;
  403. ;26. Btrieve (NLM)       (XREF v5.10  PATCH #75)
  404. ;
  405. ;    XQLP and SQL returned status 82 on a user-defined sort at the NLM due
  406. ;    to a bug in an undocumented Btrieve function.
  407. ;
  408. ;       beginning of patch #26  (MUST have patch #10 also!)
  409. ;
  410. r 418d be
  411. r 4e54 be
  412. ;
  413. ;       end of patch #26
  414. ;
  415. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  416. ;
  417. ;27. Btrieve (NLM)       (XREF v5.10  PATCH #80)
  418. ;
  419. ;    In certain cases when an UPDATE fails for Duplicate Key (Error 5) the
  420. ;    update operation may not be undone properly.  This can result in
  421. ;    subsequent status 9s or 4s on a GET_EQUAL for a limited number of other
  422. ;    keys which may have been corrupted by this failure.  This bug corrects
  423. ;    the preimaging call to fix this.
  424. ;
  425. ;       beginning of patch #27
  426. ;
  427. r 6692 24
  428. ;
  429. ;       end of patch #27
  430. ;
  431. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  432. ;
  433. ;28. Btrieve ( NLM )     (XREF v5.10  PATCH #86)
  434. ;
  435. ;     After an Update is done on a file with compressed records, positioning
  436. ;     is lost.  A Get Position will return a status 8; a Get Next will skip
  437. ;     to the next key value, ignoring the next duplicate, if any.  Similarly,
  438. ;     after an Insert is done on a file with compressed record, a
  439. ;     Get Previous will skip to the previous key value, instead of the
  440. ;     previous duplicate, if any.
  441. ;
  442. ;       beginning of patch #28  ( must have patch 10 also!!! )
  443. ;
  444. r c9af e8 6a 00 00 00 90
  445. r ca1e 8B 02 0F B7 50 16 0B D2 75 07 0F B7 90 0e 01 00 00 C3
  446. ;
  447. ;       end of patch #28
  448. ;
  449. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  450. ;
  451. ;29. BTRIEVE ( NLM )     (XREF v5.10  PATCH #87)
  452. ;
  453. ;     Sometimes a DELETE following a STEP_FIRST, then STEP_PREVIOUS
  454. ;     would return a conflict status 80 because the position was lost on the
  455. ;     failed STEP_PREVIOUS (error #9).  This fix restores the position.
  456. ;
  457. ;       beginning of patch #29
  458. ;
  459. r 3ee2 e8 56 8b 00 00
  460. r ca30 50 8b c7 e8 0a e0 ff ff 58 89 45 e0 85 c0 c3
  461. r a63e e8 66 79 ff ff 90
  462. r 1fa9 89 c6 50 eb 07 90 90 90 90 90 90 90
  463. r 1fb5 e8 3e 8a 00 00 58 66 8b 78 10 c3 90 90
  464. ;
  465. ;       end of patch #29
  466. ;
  467. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  468. ;
  469. ;30. BTRIEVE (NLM)       (XREF v5.10  PATCH #88)
  470. ;
  471. ;     A Conflict error (status 80) is returned when Updating or Deleting,
  472. ;     even though there is only one workstation accessing the file.  This
  473. ;     bug will only appear if the record being updated/deleted contains
  474. ;     a certain pattern of data: all bytes except the first four must be
  475. ;     binary zeroes, and some other, complicated conditions must be met.
  476. ;
  477. ;       beginning of patch #30
  478. ;
  479. r 635a eb 07 90 90 90
  480. r 6966 eb 10 90 90 90
  481. ;       end of patch #30
  482. ;
  483. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  484. ;
  485. ;31. BTRIEVE (NLM)       (XREF v5.10  PATCH #89)
  486. ;
  487. ;     When two clients are pointing at the same record in a file and one of
  488. ;     them does an update which changes its key,  the second client will get
  489. ;     an unpredictable, out of sequence record on his next GetNext.  This
  490. ;     patch makes his current record invalid but leaves the next and previous
  491. ;     pointers alone to maintain the relative position for that second user.
  492. ;
  493. ;       beginning of patch #31
  494. ;
  495. r 20dc eb 08 90 90 90
  496. ;       end of patch #31
  497. ;
  498. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  499. ;
  500. ;32. BTRIEVE(NLM)
  501. ;
  502. ;     Fixes a problem in patch 31 which causes the following problem: after
  503. ;     an Update which changes a record's key value, a subsequent 
  504. ;     Get Previous skips any records whose key value is a duplicate of
  505. ;     the (new) key value of the record which was just changed.
  506. ;
  507. ;       beginning of patch #32
  508. ;
  509. r 20d7 66 8b 4d fc 66 3b 4f 24 75 0f 89 f8 8d 5d 9c 33 
  510.        c9 41 e8 f8 fd ff ff eb 2a
  511. t 06/13/91
  512. ;       end of patch #32.
  513. ;
  514. ; * * * * * * * * * * * * * * * * * * * * * * * * * *
  515. ;
  516. ;       END OF PATCHES FOR BTRIEVE.NLM ver 5.10 for Netware 3.10
  517. ;
  518.